home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1994 Michael D. Bayne.
- * All rights reserved.
- *
- * Please see the documentation accompanying the distribution for distribution
- * and disclaimer information.
- */
-
- #include <exec/memory.h>
- #include <intuition/gadgetclass.h>
- #include <libraries/gadtools.h>
- #include <string.h>
- #include <stdlib.h>
-
- #include "includes.h"
- #include "libraries.h"
- #include "protos/protos.h"
-
- STRPTR NameSansParens( STRPTR Name )
- {
- BYTE Buf[64];
-
- if( Name[0] == '{' )
- {
- strcpy( Buf, Name + 1 );
- Buf[strlen( Buf ) - 1] = '\0';
- }
- else
- return Name;
-
- return Buf;
- }
-
- STRPTR NameForEntry( struct List *Entries, LONG Entry )
- {
- struct Node *Tmp;
-
- for( Tmp = Entries->lh_Head; Entry && Tmp; Tmp = Tmp->ln_Succ, --Entry );
-
- return Tmp ? Tmp->ln_Name : 0L;
- }
-
- int BT_PREFSClicked( VOID )
- {
- if( Stricmp( Prefs->bp_Blanker, "Random" ))
- MessageModule( BM_DOPREFS );
-
- return OK;
- }
-
- int BT_INFOClicked( VOID )
- {
- struct EasyStruct InfoReq =
- { sizeof( struct EasyStruct ), 0, "Information", 0L, "Ok" };
- BYTE InfoFileName[128];
- BPTR InfoFile;
-
- InfoReq.es_TextFormat = AllocVec( 1024 * sizeof( BYTE ), MEMF_CLEAR );
- if( !InfoReq.es_TextFormat )
- return OK;
-
- ActivateCxObj( ServerBroker, 0l );
-
- strcpy( InfoFileName, Prefs->bp_Dir );
- AddPart( InfoFileName, NameSansParens( Prefs->bp_Blanker ), 128 );
- strcat( InfoFileName, ".txt" );
-
- if( InfoFile = Open( InfoFileName, MODE_OLDFILE ))
- {
- LONG BytesRead;
-
- BytesRead = Read( InfoFile, InfoReq.es_TextFormat, 1024 );
- if( InfoReq.es_TextFormat[BytesRead-1] == '\n' )
- InfoReq.es_TextFormat[BytesRead-1] = '\0';
- else
- InfoReq.es_TextFormat[BytesRead] = '\0';
- Close( InfoFile );
- }
- else
- {
- strcpy( InfoReq.es_TextFormat,
- "No information available for module: " );
- strcat( InfoReq.es_TextFormat, NameSansParens( Prefs->bp_Blanker ));
- strcat( InfoReq.es_TextFormat, "." );
- }
-
- EasyRequestArgs( BlankerWnd, &InfoReq, 0L, 0L );
- FreeVec( InfoReq.es_TextFormat );
- ActivateCxObj( ServerBroker, 1l );
-
- return OK;
- }
-
- int BT_HIDEClicked( VOID )
- {
- return CLOSEWIN;
- }
-
- int BT_SAVEClicked( VOID )
- {
- Prefs->bp_Left = BlankerWnd->LeftEdge;
- Prefs->bp_Top = BlankerWnd->TopEdge;
- SaveDefaultPrefs( Prefs );
-
- return OK;
- }
-
- int BT_QUITClicked( VOID )
- {
- return QUIT;
- }
-
- int LV_BLANKERSClicked( VOID )
- {
- LONG Rand;
-
- MessageModule( BM_DOQUIT );
- strcpy( Prefs->bp_Blanker,
- NameForEntry( BlankerEntries, BlankerMsg.Code ));
- Rand = !Stricmp( Prefs->bp_Blanker, "Random" );
- GT_SetGadgetAttrs( BlankerGadgets[GD_BT_PREFS], BlankerWnd, 0L,
- GA_Disabled, Rand, TAG_DONE );
- GT_SetGadgetAttrs( BlankerGadgets[GD_BT_TOGGLE], BlankerWnd, 0L,
- GA_Disabled, Rand, TAG_DONE );
- GT_SetGadgetAttrs( BlankerGadgets[GD_CY_REPLACE], BlankerWnd, 0L,
- GA_Disabled, !Rand, TAG_DONE );
- if( !Rand )
- LoadModule( Prefs->bp_Dir, Prefs->bp_Blanker );
-
- return OK;
- }
-
- int CY_REPLACEClicked( VOID )
- {
- if( BlankerMsg.Code )
- Prefs->bp_Flags |= BF_REPLACE;
- else
- Prefs->bp_Flags &= ~BF_REPLACE;
-
- return OK;
- }
-
- int CY_BLANKCORNERClicked( VOID )
- {
- Prefs->bp_BlankCorner = BlankerMsg.Code;
-
- return OK;
- }
-
- int CY_DONTCORNERClicked( VOID )
- {
- Prefs->bp_DontCorner = BlankerMsg.Code;
-
- return OK;
- }
-
- int BT_TOGGLEClicked( VOID )
- {
- struct Node *Entry = FindName( BlankerEntries, Prefs->bp_Blanker );
- BYTE TmpName[64], OldPath[128], NewPath[128], *Name = Entry->ln_Name;
-
- strcpy( TmpName, Name );
-
- GT_SetGadgetAttrs( BlankerGadgets[GD_LV_BLANKERS], BlankerWnd, 0L,
- GTLV_Labels, ~0, TAG_DONE );
- if( Name[0] == '{' )
- {
- strcpy( Name, TmpName + 1 );
- Name[strlen( Name ) - 1] = '\0';
- }
- else
- {
- strcpy( Name, "{" );
- strcat( Name, TmpName );
- strcat( Name, "}" );
- }
- GT_SetGadgetAttrs( BlankerGadgets[GD_LV_BLANKERS], BlankerWnd, 0L,
- GTLV_Labels, BlankerEntries, TAG_DONE );
- strcpy( Prefs->bp_Blanker, Name );
- strcpy( OldPath, Prefs->bp_Dir );
- AddPart( OldPath, TmpName, 128 );
- strcpy( NewPath, Prefs->bp_Dir );
- AddPart( NewPath, Name, 128 );
- Rename( OldPath, NewPath );
-
- return OK;
- }
-
- int BlankerCloseWindow( VOID )
- {
- return CLOSEWIN;
- }
-
- int BlankerVanillaKey( VOID )
- {
- switch( BlankerMsg.Code )
- {
- case 'p':
- return BT_PREFSClicked();
- case 'i':
- return BT_INFOClicked();
- case 'h':
- return CLOSEWIN;
- case 's':
- return BT_SAVEClicked();
- case 't':
- return BT_TOGGLEClicked();
- case 'q':
- return QUIT;
- case 'b':
- Prefs->bp_BlankCorner = ( Prefs->bp_BlankCorner + 1 ) % 5;
- GT_SetGadgetAttrs( BlankerGadgets[GD_CY_BLANKCORNER], BlankerWnd, 0L,
- GTCY_Active, Prefs->bp_BlankCorner, TAG_DONE );
- return OK;
- case 'B':
- Prefs->bp_BlankCorner = ( Prefs->bp_BlankCorner + 4 ) % 5;
- GT_SetGadgetAttrs( BlankerGadgets[GD_CY_BLANKCORNER], BlankerWnd, 0L,
- GTCY_Active, Prefs->bp_BlankCorner, TAG_DONE );
- return OK;
- case 'd':
- Prefs->bp_DontCorner = ( Prefs->bp_DontCorner + 1 ) % 5;
- GT_SetGadgetAttrs( BlankerGadgets[GD_CY_DONTCORNER], BlankerWnd, 0L,
- GTCY_Active, Prefs->bp_DontCorner, TAG_DONE );
- return OK;
- case 'D':
- Prefs->bp_DontCorner = ( Prefs->bp_DontCorner + 4 ) % 5;
- GT_SetGadgetAttrs( BlankerGadgets[GD_CY_DONTCORNER], BlankerWnd, 0L,
- GTCY_Active, Prefs->bp_DontCorner, TAG_DONE );
- return OK;
- default:
- return OK;
- }
- }
-
- LONG openMainWindow( VOID )
- {
- static BYTE Title[80];
- struct Node *TmpNode;
- LONG i;
-
- if( !BlankerWnd )
- {
- if( SetupScreen())
- return 1L;
- strcpy( Title, "Garshneblanker ( PopKey=" );
- strcat( Title, Prefs->bp_PopKey );
- strcat( Title, ", BlankKey=" );
- strcat( Title, Prefs->bp_BlankKey );
- strcat( Title, " )" );
- BlankerLeft = Prefs->bp_Left;
- BlankerTop = Prefs->bp_Top;
- OpenBlankerWindow();
- SetWindowTitles( BlankerWnd, "Garshneblanker", Title );
- }
- else
- {
- ActivateWindow( BlankerWnd );
- WindowToFront( BlankerWnd );
- }
-
- if( BlankerWnd )
- ScreenToFront( BlankerWnd->WScreen );
- else
- return QUIT;
-
- GT_SetGadgetAttrs( BlankerGadgets[GD_LV_BLANKERS], BlankerWnd, 0L,
- GTLV_Labels, BlankerEntries, TAG_DONE );
- GT_SetGadgetAttrs( BlankerGadgets[GD_CY_REPLACE], BlankerWnd, 0L,
- GTCY_Active, Prefs->bp_Flags & BF_REPLACE, TAG_DONE );
- GT_SetGadgetAttrs( BlankerGadgets[GD_CY_BLANKCORNER], BlankerWnd, 0L,
- GTCY_Active, Prefs->bp_BlankCorner, TAG_DONE );
- GT_SetGadgetAttrs( BlankerGadgets[GD_CY_DONTCORNER], BlankerWnd, 0L,
- GTCY_Active, Prefs->bp_DontCorner, TAG_DONE );
-
- for( i = 0, TmpNode = BlankerEntries->lh_Head;
- TmpNode && Stricmp( TmpNode->ln_Name, Prefs->bp_Blanker );
- TmpNode = TmpNode->ln_Succ, i++ );
- if( !TmpNode )
- i = 0;
- GT_SetGadgetAttrs( BlankerGadgets[GD_LV_BLANKERS], BlankerWnd, 0L,
- GTLV_Selected, i, GTLV_MakeVisible, i, GTLV_Top, i,
- TAG_DONE );
-
- i = !Stricmp( Prefs->bp_Blanker, "Random" );
- GT_SetGadgetAttrs( BlankerGadgets[GD_BT_PREFS], BlankerWnd, 0L,
- GA_Disabled, i, TAG_DONE );
- GT_SetGadgetAttrs( BlankerGadgets[GD_BT_TOGGLE], BlankerWnd, 0L,
- GA_Disabled, i, TAG_DONE );
- GT_SetGadgetAttrs( BlankerGadgets[GD_CY_REPLACE], BlankerWnd, 0L,
- GA_Disabled, !i, TAG_DONE );
-
- return OK;
- }
-